<?php
namespace Home\Model;

use Think\Model;

class UserModel extends Model
{

    //模型属性的校验
    protected $_validate = array(
        array('username','','帐号名称已经存在！',0,'unique',1), // 在新增的时候验证username字段是否唯一
        array('username','require','必须输入用户名'),
        array('username','is_mobile','不是合法的手机号码',0,'function'), // 自定义函数验证数据格式
        array('password','require','必须输入密码！'),
        // array('password', 'check_length', '密码长度必须在6-20位之间！', 0, 'callback', 3, array(6, 20)),
    );
   
   //自动设置模型的属性
    protected $_auto  =   array(
        array('password','md5',self::MODEL_BOTH,'function') , // 对password字段在新增和编辑的时候使md5函数处理
        array('create_time','time',self::MODEL_INSERT,'function'), // 新增的时候写入当前时间戳
        array('update_time','time',self::MODEL_UPDATE,'function'), // 更新的时候写入当前时间戳
    );  // 自动完成定义


    // /**
    // *验证字符长度是否在某个区间，
    // *$str : 表单字段接收的内容，
    // *$min:最小长度，
    // *max:最大长度，
    // **/
    // private function check_length($str, $min, $max)
    // {
    //     preg_match_all("/./u", $str, $matches);
    //     $len = count($matches[0]);
    //     if ($len < $min || $len > $max) {
    //         return false;
    //     } else {
    //         return true;
    //     }
    // }


     /**
     * 注销当前用户
     * @return void
     */
    public function logoff()
    {
        session('user_auth', null);
        session('user_auth_sign', null);
    }

    //用户登陆，用户身份验证通过，则记录SESSION的同时返回用户信息的记录，失败返回false
    public function login($username, $password, $remember)
    {
        $map=array(
            'username'=>$username,
            'password'=>$password
        );
        $user=$this->where($map)->find();
        //select * from tp_user where username = {$username} and password ={$password}
        if ($user) {
            //记录登陆的附加操作
            $this->autoLogin($user, $remember);
        } else {
            $user=false;
        }

        return $user;
    }

    /**
     * 自动登录用户
     * @param  integer $user 用户信息数组
     */
    private function autoLogin($user, $remember = false)
    {

        /* 更新登录信息 */
        $data = array(
            'uid' => $user['uid'],
            'login' => array('exp', '`login`+1'),
            'last_login_time' => NOW_TIME,
            'last_login_ip' => get_client_ip(1),
            'session_id'=>session_id(),
        );
        $this->save($data);
   
        /* 记录登录SESSION和COOKIES */
        $auth = array(
            'uid' => $user['uid'],
            'username' => $user['username'],
            'last_login_time' => $user['last_login_time'],
            // 'audit' => $audit,
        );
        session('user_auth', $auth);
        session('user_auth_sign', data_auth_sign($auth));
        // if ($remember) {
        //     $user1 = D('user_token')->where('uid=' . $user['uid'])->find();
        //     $token = $user1['token'];
        //     if ($user1 == null) {
        //         $token = build_auth_key();
        //         $data['token'] = $token;
        //         $data['time'] = time();
        //         $data['uid'] = $user['uid'];
        //         D('user_token')->add($data);
        //     }
        // }
    }
}
